iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
Software Development

挑戰用JavaScript刷LeetCode的Top Interview Questions系列 第 1

刷LeetCode-Top Interview Questions 陣列篇1

  • 分享至 

  • xImage
  •  

主題:Array

Remove Duplicates from Sorted Array

題目為拿掉陣列中重複的元素,且不要新增新的陣列來操作原來的陣列,最後回傳陣列長度

Ruby:

def remove_duplicates(nums)
  nums.uniq!&.length
end

使用uniq!方法可以把重複的元素過濾掉,加驚嘆號的意思是會影響到原來矩陣的意思,不加&的話當input為空陣列時會出現以下錯誤:

NoMethodError (undefined method 'length' for nil:NilClass)

加&的話則是當沒有length方法時則不會執行,且直接回傳 nums.uniq!

JavaScript:

var removeDuplicates = function(nums) {
    for(i=0; i<nums.length;i++){
        for(j=i+1; j<nums.length; j++){
            if (nums[i] == nums[j]){
                nums.splice(j,1)
                j=j-1
            }
        }
    }
    return nums.length
};

用JavaScript寫卡住的點在於當找到相同元素時把後面的元素拿掉後,陣列長度變了,若還是照原本的index下去找的話被置換的下一個原色會被跳過,因此換完後要加一個j=j-1

小結:

  • splice方法特性會影響到原來的陣列,因此若使用filter不符合題目需求
  • 好加在本題的input是排序好的陣列,因此會被刪除的一定是連續排在一起的;若不是的話,到底要不要先排好呢?
  • Ruby真好用 : )

下一篇
刷LeetCode-Top Interview Questions 陣列篇2
系列文
挑戰用JavaScript刷LeetCode的Top Interview Questions7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言